<?php
/**
 Базовый для всех сущностей класс 
 * 
 @author Гринько Виталий <vitalygrinko@gmail.com>
 */
class Essence extends Service_Pager {
  
  /*
  Идентификатор сущности
  */
  protected $_id = NULL; 
  /*
  Тип сущности (ID)
  */
  protected $_type; 
  /*
  Тип сущности (название)
  */
  protected $_typeName; 
  /*
  Массив с полями сущности (исходный)
  */
  protected $_arrOne = array(); 
  /*
  Массив с полями сущности (доступный для редактирования извне)
  */
  public $arrOne = array(); 
  
  /*
  Универсальный конструктор
  */
  public function __construct($id = NULL) {
    if ($this->_type && empty($this->_typeName)) {
      $this->_typeName = Service_Essence::getEssenceTypeName($this->_type);
    }
    if ($id && $this->_type) {
      $this->_id = $id;
      $this->_arrOne = $this->arrOne = $this->_getOne();
    }
    
    return $this->_arrOne;
  }
  
  /*
  Получение всех полей сущности по ID и типу
  */
  private function _getOne() {
    if (!$this->_id || !$this->_type) return array();
    $objDb = Service_Database::instance();
    $tableName = $this->_typeName;
    $stmt = "SELECT `" . $tableName . "`.*
             FROM `" . $tableName . "`
             WHERE `" . $tableName . "`.`ID_" . $tableName . "`=" . $this->_id;
    return $objDb->select($stmt);
  }
  
  /*
  Возвращает значение поля из исходного массива
  */
  public function getField($name) {
    if (!isset($this->_arrOne[$name])) return NULL;
    else return $this->_arrOne[$name];
  }
  
  
}
?>